// pages/recommendSong/recommendSong.js
import request from '../../../utils/request'
import PubSub from 'pubsub-js'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    day: new Date().getDate(), // 日
    month: new Date().getMonth() + 1, // 月
    musicList: [], // 推荐歌曲列表数据
    index: '' // 索引值
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getRecommendMusicList()
    // 订阅消息,参数1:消息名字,参数2:传递过来的数据
    PubSub.subscribe('switchType', (msg, type) => {
      // 需要得到歌曲列表的数组
      // 需要得到之前播放音乐的时候存储这个播放音乐对应的索引值
      let { musicList, index } = this.data
      // 判断标识,进行索引的修改,并且更新索引值
      if (type === 'pre') {
        (index === 0) && (index = musicList.length)
        index--
      } else {
        (index === musicList.length - 1) && (index = -1)
        index++
      }
      this.setData({
        index
      })
      // 根据数组,根据索引,得到上一曲/下一曲的歌曲对象的id
      const musicId = musicList[index].id
      // 把id传入到歌曲播放页
      PubSub.publish('musicId',musicId)
    })

  },
  // 获取推荐歌曲列表数据
  async getRecommendMusicList () {
    const musicListData = await request('/recommend/songs')
    // 更新数据
    this.setData({
      musicList: musicListData.recommend
    })
  },

  // 跳转到歌曲的详情页(播放页)
  toSong (event) {
    // 思路1:传递歌曲对象,行不通
    // 思路2:一个一个数据的获取和传递,麻烦
    // 思路3:传递一个id数据,使用id属性存储歌曲对象的id值,类型会发生变化,使用data-方式更好

    const { id, index } = event.currentTarget.dataset
    this.setData({
      index
    })

    wx.navigateTo({
      url: '/packageSong/pages/song/song?songId=' + id
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})